<?php
	/*
	 *模型：系统管理
	 *class.system.php
	 *By QINIAO
	 *&By ZY
	 */

	class system{

		var $db;

		function system($dbhandle){
			$this->db = $dbhandle;
		}

	

	

	
/**
 * 备份数据库结构和所有数据
 *
 * @param string $table 数据库表名
 * @return string
 */
function dataBak($table){
	global $db;
	$sql = "DROP TABLE IF EXISTS $table;\n";
	$createtable = $db->query("SHOW CREATE TABLE $table");
	$create = $db->fetch_row($createtable);
	$sql .= $create[1].";\n\n";

	$rows = $db->query("SELECT * FROM  $table");
	$numfields = $db->num_fields($rows);
	$numrows = $db->num_rows($rows);
	while ($row = $db->fetch_row($rows)){
		$comma = "";
		$sql .= "INSERT INTO $table VALUES(";
		for ($i = 0; $i < $numfields; $i++){
			$sql .= $comma."'".mysql_escape_string($row[$i])."'";
			$comma = ",";
		}
		$sql .= ");\n";
	}
	$sql .= "\n";
	return $sql;
}


/**
 * 检查文件是否包含BOM(byte-order mark)
 */
function checkBOM($contents) {
    $charset[1] = substr($contents, 0, 1);
    $charset[2] = substr($contents, 1, 1);
    $charset[3] = substr($contents, 2, 1);
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
        return true;
    } else {
        return false;
    }
}
/**
 * 解压缩
 */
function Unthezip($file,$todir) {
require_once  THINKSAAS.'/zip.class.php';
$zip=new Zip();    
$zip->decompress($file,$todir);
}
/**
 * 取API(xml)
 */
function XmlApi($url,$name) {
//缓存
$time=time();
if(file_exists(THINKDATA.'/cache/system/'.$name."time.php")){
$arrData = AppCacheRead("system",$name."time.php");
}
if(!$arrData["time"]) {
//无缓存
$api = file_get_contents($url);
$this->ApiCache($api,$name.".php");
$this->Creattime($time,$name);
}else{

if($time-$arrData["time"]>600){
//需要更新
$api = file_get_contents($url);
$this->ApiCache($api,$name);
$this->Creattime($time,$name);
}else{
//不需要
$File = THINKDATA.'/cache/system/online/'.$name.".php";
if(file_exists($File)){
$f = fopen($File,"r");
$api = fread($f,filesize($File));
fclose($f);
return $api;

}else{
return "0";
}

}
}
if($api){
return $api;
}else{
return "0";
}
}
/**
 * 创建缓存时间
 */
function Creattime($time,$name) {
$arr = array(
			'time' => $time,
		);
AppCacheWrite($arr,'system',$name.'time.php');	
}
/**
 * 存入缓存
 */
function ApiCache($api,$name) {
$appFile = THINKDATA.'/cache/system/online';
!is_dir($appFile)?mkdir($appFile):'';
$cacheFile = $appFile.'/'.$name;
if($cacheFile) unlink($cacheFile);
@ $fp = fopen($cacheFile,'a') OR qiMsg('读取缓存失败。如果您使用的是Unix/Linux主机，请修改缓存目录 (data/cache/system/online) 下所有文件的权限为777。如果您使用的是Windows主机，请联系管理员，将该目录下所有文件设为everyone可写');
@ $fw = fwrite($fp,$api) OR qiMsg('写入缓存失败，缓存目录 (cache/system/online) 不可写');
fclose($fp);
return true;
}

function get_file($url, $folder) { 
set_time_limit (24 * 60 * 60); // 设置超时时间 
$destination_folder = $folder . '/'; // 文件下载保存目录，默认为当前文件目录 
if (!is_dir($destination_folder)) { // 判断目录是否存在 
$this->mkdirs($destination_folder); // 如果没有就建立目录 
}  
$newfname = $destination_folder . basename($url); // 取得文件的名称 
$file = fopen ($url, "rb"); // 远程下载文件，二进制模式 
if ($file) { // 如果下载成功 
$newf = fopen ($newfname, "wb"); // 远在文件文件 
if ($newf) // 如果文件保存成功 
while (!feof($file)) { // 判断附件写入是否完整 
fwrite($newf, fread($file, 1024 * 8), 1024 * 8); // 没有写完就继续 
}  
}  
if ($file) { 
fclose($file); // 关闭远程文件 
}  
if ($newf) { 
fclose($newf); // 关闭本地文件 
}  
return basename($url); 
}  

function mkdirs($path , $mode = "0755") { 
if (!is_dir($path)) { // 判断目录是否存在 
$this->mkdirs(dirname($path), $mode); // 循环建立目录   
mkdir($path, $mode); // 建立目录 
}  
return true; 
}  

}
